home *** CD-ROM | disk | FTP | other *** search
/ Aminet 23 / Aminet 23 (1998)(GTI - Schatztruhe)[!][Feb 1998].iso / Aminet / dev / e / eaudio11.lha / eaudio.doc < prev    next >
Text File  |  1997-11-01  |  5KB  |  124 lines

  1.                                 ___
  2.                 _____  ___  ___(___) _____________      ______
  3.              __/  __ \|   \/   |   |/ ______/  __ \____/   __/
  4.               7    /  |     _  |   |  \__  7    /  |__/   __|__
  5.               |   .   |  \  /  |   |    /  |   .   |  |        |
  6.               |   |___|__|\/|__|___|\______|   |___|  |________|
  7.               `---'                        `---'
  8.                   _____________     ___ ______  _____  _____
  9.                  / _______/ __ \.--|   |   __ \/    / /  __/
  10.                  \_____ \7   /  |  |   |    /  \ |_/_|  __|__
  11.                  /    '  |      |  |   |   .   < |   \       |
  12.                  \_______|_____/|____,_|___|____)____/_______|
  13.   
  14.                      ...Mr Tickle of sPEARhEAD presents...
  15.                                   E Audio v1.1
  16.                             
  17. -----------------------------------------------------------------------------
  18.  
  19. UPDATE NOTE!!
  20.  
  21. Improvements since v1.0:
  22.  
  23.   * Frequencies over 32767 now play correctly :)
  24.   * Fixed nasty bug that set a wrong bit in DMACON. (Thanks to
  25.     Jens Herhold for spotting this one)
  26.  
  27. To do:
  28.  
  29.   * IFF 8SVX loader
  30.   * 8 bit WAV loader
  31.   * Optimizations
  32.   * Fix reported bugs
  33.   
  34.   (I actually have written routines that do this, but was too lazy to
  35.   include them in this version :)
  36.   
  37.   
  38. This is a little Amiga E module I knocked up because I wanted to easily add
  39. sound to my programs. This module provides you with a simple command set
  40. with which you can add sound to your Amiga E programs.
  41.  
  42. **NOTE** This module is 100% metal bashing code. Basically because
  43. I dont like audio.device!
  44.  
  45. If your program is going to be a happy multitasking program, its probably
  46. a good idea to open audio.device and allocate the channels you are going
  47. to use with EAudio, just to make sure you dont mess up other sound producing
  48. programs, but this is not compulsory.
  49.  
  50. OK, before you can play any samples, you must load some samples into chip
  51. ram. If you are loading them from disk -> chip ram (recommended way of
  52. doing it) just call loadRaw(), like this:
  53.  
  54. sampledata, samplelength:=loadRaw('PROGDIR:data/mylovelysample.raw')
  55. IF(sampledata)
  56.   ...
  57.   ...
  58.   ...
  59.   Dispose(sampledata)
  60. ENDIF
  61.  
  62. If you wish, you can write your own load routines (to load 8SVX etc.). If
  63. your program does not contain a single loadRaw(), you MUST call "setup()",
  64. as this sets up some variables ready for use by eaudio. If your program
  65. contains loadRaw() anywhere, you dont need to call setup().
  66.  
  67. Once you have all your samples loaded into chip ram, you can play them
  68. using "playData()" the arguments are:
  69.  
  70. playData(sampledata,samplelength,frequency,channels,volume)
  71.  
  72. sampledata   = A pointer to the sample to be played (in CHIP RAM!!)
  73. samplelength = The length of the sample
  74. frequency    = The playback frequency in hz (A-2 on Protracker = 13964)
  75. channels     = This is which channel(s) you wish to play the sample in.
  76.                This is decided by adding together the 4 channel ID constants
  77.                in the module, e.g:
  78.                
  79.                CHAN_LEFT1+CHAN_RIGHT1
  80.                
  81.                would play in both left and right speakers. (you have two
  82.                channels in each speaker)
  83. volume       = Overall playback volume, from 0 to 64. (0= silent,
  84.                64= Full volume)
  85.                
  86. This sample will now play over and over again, until you either:
  87.  
  88. A) Call stopChannels(), which basically halts all sounds in all specified
  89.    channels, or
  90.    
  91. B) Call exitLoop(), which stops the sample at the end of the next loop.
  92.  
  93. exitLoop() cannot be called directly after playData(). It is recommended
  94. that, for example, in a loop, exitLoop() is called before every
  95. vertical blank, so that any sample played in that loop will only be played
  96. once, e.g:
  97.  
  98. -> Plays a sample when user presses left mousebutton
  99. REPEAT
  100.   exitLoop(CHAN_LEFT1+CHAN_RIGHT1)
  101.   WaitTOF()
  102.   IF(Mouse() AND %001) THEN playData(sample,samplen,13964,CHAN_LEFT1+CHAN_RIGHT1,64)
  103. UNTIL CtrlC()
  104. stopChannels(CHAN_LEFT1+CHAN_RIGHT1)
  105.  
  106. Have fun,
  107. Mr Tickle
  108.  
  109.  
  110. -----------> A few notes to remember
  111.  
  112. * Never call exitLoop() DIRECTLY after playData(), at least leave some gap!
  113.   It wont crash or anything, but the sample wont be played correctly.
  114.   If a sample refuses to play correctly, try putting a WaitTOF() between
  115.   the exitLoop() and playData() in question. If that solves it, the exitLoop
  116.   is too near.
  117. * Always load samples into chip ram if you arent using loadRaw()
  118. * Always call stopChannels() at the end of the program for any channels
  119.   used in your program, as this makes sure all audio DMA is halted.
  120.   (exitLoop() doesnt actually stop the audio DMA...)
  121. * Never specify a playback frequency of 0 (that wouldn't make any sense
  122.   anyway)
  123.  
  124.